home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ V5.02
/
OCFSRC.PAK
/
MAKEFILE
< prev
next >
Wrap
Text File
|
1997-05-06
|
16KB
|
596 lines
#-----------------------------------------------------------------------------
# MAKEFILE for ObjectComponents Framework
#
# Copyright (c) Borland International 1994, 1996
# All Rights Reserved
#
# $Revision: 2.30 $
#
# Defines:
# MODEL=<d|s|m|l|f> one of: dll(default), small, medium, large or flat
# WIN32 enables win32 static (flat) or DLL
# MT links to the multithreaded version of the RTL
# DIAGS enables runtime diagnostics (adds 'd' to lib name before 'w')
# DEBUG enables debug info for TDW & TD32
# VCL builds OWL using the VCL-compatible RTL (cp32mt)
# (implies -DMT and -DNAMESPACE; requires MODEL=t and WIN32)
# OCFNOPCH disables precompiled headers for OCF
# OCFNAME=Xxx lib & DLL name base, Defaults to 'OCF'. Req. for non-diag DLLs
# OCFVER=nnn version for OCF DLL. Defaults to 52. Req. for non-diag DLLs
# USERDLL builds OCF for use in a user DLL (adds 'u' to lib name after
# model)
# CODEGUARD builds OCF with CodeGuard: 1=basic data, 2=full checking
# NAMESPACE builds OCF within a namespace "OCF"
# ALIGN=<1|2|4|8> specifies the alignment
# ILINK uses ILINK32 instead of TLINK32 to link
#
# Define these for alternate OCF build directories:
# OCFSRCDIR defaults to: $(BCROOT)\source\OCF
# OCFINCDIR defaults to: $(BCROOT)\include
# OCFLIBDIR defaults to: $(BCROOT)\lib
# OCFBINDIR defaults to: $(BCROOT)\bin
#
# When building VCL-compatible libraries, the makefile defaults
# assume BCROOT points to the base of the C++Builder tree. If
# you are building in the context of Borland C++, then you must
# set BCBROOT explicitly yourself.
#
# BCBROOT defaults to: $(BCROOT) (root of C++Builder)
# VCLINCDIR defaults to: $(BCBROOT)\include\VCL
# VCLOBJDIR defaults to: $(BCBROOT)\lib\obj
# VCLLIBDIR defaults to: $(BCBROOT)\lib
#-----------------------------------------------------------------------------
.autodepend
.cacheautodepend
.swap
#--------------------------------------------------------------------
# Fill in defaults. The following table describes the logic used for
# assigning defaults. Blank means "don't care", ! means not defined
#
# MODEL | DLL | WIN16 | WIN32 | RESULTS
# -------+-----+-------+-------+--------------------------------
# ! | ! | ! | | MODEL=f WIN32=1 (default)
# ==f|t | ==1 | ! | | MODEL=f|t WIN32=1 DLL=1
# ==f|t | ! | ! | | MODEL=f|t WIN32=1
# ! | ! | ==1 | ! | MODEL=l WIN16=1 DLL=1
# | ==1 | ==1 | ! | MODEL=l WIN16=1 DLL=1
# ==m|l | ! | | ! | MODEL=m|l WIN16=1
#---------+-----+-------+-------+--------------------------------
#
# If no model is defined or implied, set a default
#
!if !$d(MODEL) && !defined(MT) && !$d(WIN16) && !$d(OS2) && !$d(VCL)
MODEL = f # default build model = flat static, Win32
# MODEL = d # default build model = flat DLL, Win32
!endif
#
# DLL model implies some other settings
#
!if $(MODEL) == d # model d is short for building the DLL-- flat or large
DLL = 1
! if !$d(WIN16) && !$d(OS2)
WIN32 = 1 # DLL is 32bit by default
! endif
!endif
#
# If no system was set, choose a default
#
!if (!$d(WIN32) && !$d(WIN16) && !$d(OS2))
! if ($(MODEL) == t || $(MODEL) == f || $d(VCL) || $d(MT)) && !$d(OS2)
WIN32 = 1 # default to WIN32 switch on for flat or multi-threaded model
! elif $(MODEL)==l
WIN16 = 1 # default to WIN16 switch on for large model
! endif
!endif
#
# For multithreaded target, set the value of MT
#
!if $(MODEL) == t || $d(MT)
MT = mt # model t implies MT. Use MT as 'mt' to build library names
!endif
#
# VCL compatibility implies use of namespace
#
!if $d(VCL)
NAMESPACE = 1
!endif
#
# Make sure model is consistent with system
#
!if $d(WIN32)
! if $d(MT) || $d(VCL)
MODEL = t
! else
MODEL = f
! endif
!elif $d(DLL)
MODEL = l
!endif
#
# Some MODELs [l,f,t] always imply WIN16 or WIN32 - Update
# according to model.
#
!if $(MODEL) == l # MODEL == l
WIN16 = 1
!elif ($(MODEL) == t || $(MODEL) == f) # MODEL == f|t
WIN32 = 1
!endif
#
# Figure out default data alignment based on target
#
!if !$d(ALIGN)
! if $d(WIN32)
ALIGN = 1
! else
ALIGN = 1
! endif
!endif
#
# Check for incompatible choices and warn user
#
!if $d(ILINK) && $d(WIN16)
! error Cannot build 16-bit targets with ILINK.
!endif
!if $d(DOS) && $d(MT)
! error Cannot build multi-thread library for DOS.
!endif
!if $d(MODEL)
! if $(MODEL) != l && $(MODEL) != f && $(MODEL) != t && $(MODEL) != d
! error MODEL must be l, d, f or t
! endif
!endif
#--------------------------------------------------------------------
# Dir & name components
#--------------------------------------------------------------------
!if $d(DLL)
! if $d(WIN32)
! if $d(VCL)
KEY = v
! else
KEY = $(MODEL)
! endif
KEY = w$(KEY)i # 32bit flat or multithread DLL import library
! else
KEY = wi # 16bit DLL import library
! endif
!else
! if $d(VCL)
KEY = wv
! else
KEY = w$(MODEL) # Static library uses w+model
! endif
!endif # if/else $d(DLL)
! if $d(USERDLL)
KEY = $(KEY)u # Static or import library for use by dlls
! endif
!if !$d(OCFNAME)
OCFNAME = OCF
! if !$d(OCFVER)
OCFVER = 52
! endif
!endif
#--------------------------------------------------------------------
# Debug & diagnostic flags
#--------------------------------------------------------------------
!if $d(DEBUG)
CDBG = -v -k -Od # debug-info on, normal stack, no optimizations
!endif
!if 1 || $d(DEBUG) # Leave public debug info in dll & strip to a .tds after
! if $d(WIN32)
LDBG = -v
! else
LDBG = -v -Vt
! endif
!endif
!if $d(DIAGS) # default diags use precondition, check, trace & warn
__DEBUG=2
__TRACE=1
__WARN=1
! if $d(WIN32)
BD=d # Use Bids Diag version when OCF lib is diag
! else
BD=db # Extension compatible with traditional DOS names
! endif
OD=d # OCF libs & dll get a 'd' for Diag versions
!endif
#
# Build up compiler diag switches based on settings
#
!if $d(__DEBUG)
CDIAG = -D__DEBUG=$(__DEBUG)
!endif
!if $d(__TRACE)
CDIAG = $(CDIAG) -D__TRACE
!endif
!if $d(__WARN)
CDIAG = $(CDIAG) -D__WARN
!endif
#--------------------------------------------------------------------
# Dir & search paths, & precompiled headers
#--------------------------------------------------------------------
#
# BC tools BCBINDIR can be based on MAKEDIR if no BCROOT is defined
#
!if $d(BCROOT)
BCBINDIR = $(BCROOT)\bin
!else
BCBINDIR = $(MAKEDIR)
!endif
#
# Default bcroot to whatever is in bcroot.inc
#
!if !$d(BCROOT)
!include $(MAKEDIR)\bcroot.inc
!endif
#
# Where to find BC tools, libraries and include files
#
BCSRCDIR = $(BCROOT)\source
BCINCDIR = $(BCROOT)\include
BCLIBDIR = $(BCROOT)\lib
BCBINDIR = $(BCROOT)\bin
#
# Where to find OCF dirs-- can set these for special layouts
# Build search paths differently if OCF include dir is not below BC's
#
!if !$d(OCFSRCDIR)
OCFSRCDIR = $(BCSRCDIR)\ocf
!endif
#
# Where to find OCF headers
#
!if !$d(OCFINCDIR)
OCFINCDIR=$(BCINCDIR)
RCINCLUDEPATH = -i$(BCINCDIR)
!else
RCINCLUDEPATH = -i$(OCFINCDIR) -i$(BCINCDIR)
!endif
#
# Check if BIDS header directory was specified
#
!if $d(BIDSINCDIR)
INCLUDE=$(OCFINCDIR);$(BIDSINCDIR);$(BCINCDIR)
!else
INCLUDE=$(OCFINCDIR);$(BCINCDIR)
!endif
#
# Location (destination) of OCF libraries
#
!if !$d(OCFLIBDIR)
OCFLIBDIR = $(BCLIBDIR)
!endif
#
# Location (destination) of OCF binaries
#
!if !$d(OCFBINDIR)
OCFBINDIR = $(BCBINDIR)
!endif
OCFOBJDIR = $(OCFSRCDIR)\o\$(OD)$(KEY) # Keep seperate diag/nondiag dirs
.PATH.obj = $(OCFOBJDIR)
.PATH.res = $(OCFOBJDIR)
.PATH.def = $(OCFOBJDIR)
.PATH.lib = $(OCFLIBDIR)
.PATH.cpp = $(OCFSRCDIR)
#
# Define OCFNOPCH to disable the use of Precompiled headers when building OCF
#
!if !$d(OCFNOPCH)
CPCH= -H=$(OCFLIBDIR)\$(OCFNAME)$(OD)$(KEY).csm -H"pch.h" -D_OCFPCH
! if $d(WIN32) || $(__MAKE__) > 0x0370 # -Hc: !valid in earlier 16-bit
CPCH= $(CPCH) -Hc
! endif
!endif
#
# Where to find VCL libraries, objs, and headers
#
!if $d(VCL)
! if !$d(BCBROOT)
BCBROOT = $(BCROOT)
! endif
! if !$d(VCLLIBDIR)
VCLLIBDIR = $(BCBROOT)\lib
! endif
! if !$d(VCLOBJDIR)
VCLOBJDIR = $(VCLLIBDIR)\obj
! endif
! if !$d(VCLINCDIR)
VCLINCDIR = $(BCBROOT)\include\vcl
! endif
INCLUDE = $(INCLUDE);$(VCLINCDIR)
!endif
#--------------------------------------------------------------------
# Library names
#--------------------------------------------------------------------
OCFLIB = $(OCFLIBDIR)\$(OCFNAME)$(OD)$(KEY).lib
#
# If building for VCL, use an RTL that begins "cp" instead of "cw"
#
!if $d(VCL)
RTLPFX=cp
!else
RTLPFX=cw
!endif
#--------------------------------------------------------------------
# Tools and options which are Win16/Win32 independent
#--------------------------------------------------------------------
!if $d(NAMESPACE)
CFLAGS = $(CFLAGS) -DBI_NAMESPACE
!endif
#--------------------------------------------------------------------
# Tools and options for Win32
#--------------------------------------------------------------------
!if $d(WIN32)
CC = $(BCBINDIR)\bcc32 # Compiler
# CC = $(BCBINDIR)\bcc32i # Compiler
RCC = brcc32 -w32 # Resource compiler
CCASM = $(BCBINDIR)\tasm32 # Assembler
! if $d(ILINK)
LINK = $(BCBINDIR)\ilink32 # Linker
! else
LINK = $(BCBINDIR)\tlink32 # Linker
! endif
LIB = $(BCBINDIR)\tlib # Librarian
IMPLIB = $(BCBINDIR)\implib # Import library generator
TDSTRIP = $(BCBINDIR)\tdstrp32 # Debug info extractor
CFLAGS = -d -k- -Ogmpv $(CFLAGS) # Optimizations (-O1gmpv)
! if $d(CODEGUARD) # d=add data, c=add calls, t=check this
CFLAGS = $(CFLAGS) -vGd -vGt
! if $(CODEGUARD) == 2
CFLAGS= $(CFLAGS) -vGc
! endif
! endif
CFGFILE = bcc32.cfg # Name of compiler's config file
! if $d(DEBUG)
TLIBOPTS = /P512 /C
! else
TLIBOPTS = /P64 /0 /C
! endif
! if $d(DLL)
CFLAGS = $(CFLAGS) -WDE -D_BUILDOCFDLL
LFLAGS = $(LDBG) -Tpd -aa -s -c
! if !$d(BIDSILIB)
! if $d(VCL)
DLL32KEY = v
! else
DLL32KEY = MODEL
! endif
BIDSILIB = bids$(BD)$(DLL32KEY)i
! endif
STDLIBS = import32 $(RTLPFX)32$(MT)i
! if $d(CODEGUARD)
STDLIBS = cg32 $(STDLIBS)
! endif
! else
CFLAGS = $(CFLAGS) -W
! endif
! if $d(VCL)
CFLAGS = $(CFLAGS) -b- -Vx -Ve
LFLAGS = $(LFLAGS) -j$(VCLOBJDIR)
STDLIBS = $(STDLIBS)
! endif
! if !$d(MT)
CFLAGS = $(CFLAGS) -WM-
! endif
! if $d(VCL)
CFLAGS = $(CFLAGS) -a4
! elif $d(ALIGN)
CFLAGS = $(CFLAGS) -a$(ALIGN)
! endif
#--------------------------------------------------------------------
# Tools and options for Win16
#--------------------------------------------------------------------
!else
CC = $(BCBINDIR)\bcc # Compiler
RCC = brcc32 -31 # Resource compiler
CCASM = $(BCBINDIR)\tasm # Assembler
LINK = $(BCBINDIR)\tlink # Linker
LIB = $(BCBINDIR)\tlib # Librarian
# implib needs -o switch in 16 bit for compatibility
IMPLIB = $(BCBINDIR)\implib -o # Import library generator
TDSTRIP = $(BCBINDIR)\tdstrip # Debug info extractor
CFLAGS = -3 -d -k- -O1gmpv # Optimizations
! if $d(CODEGUARD) # d=add data, c=add calls, t=check this
CFLAGS = $(CFLAGS) -vGd -vGt
! if $(CODEGUARD) == 2
CFLAGS= $(CFLAGS) -vGc
! endif
! endif
! if $(MODEL) != s && $(MODEL) != m # Large models can put strs in code seg
CFLAGS = $(CFLAGS) -dc
! endif
CFLAGS = -m$(MODEL) $(CFLAGS) # Memory model
! if $d(OCFFARVTABLE)
CFLAGS = $(CFLAGS) -D_OCFFARVTABLE;_BIDSFARVTABLE #;_RTLFARVTABLE
! endif
! if $d(NO_CPP_EXCEPTIONS)
CFLAGS = $(CFLAGS) -DNO_CPP_EXCEPTIONS -x-
! endif
CFGFILE = turboc.cfg
! if $d(DEBUG)
TLIBOPTS = /P512 /C
! else
TLIBOPTS = /P32 /0 /C
! endif
! if $d(DLL) # Build the 16bit OCF for use with RTL/BIDS DLL
! if $d(USERDLL)
CFLAGS = $(CFLAGS) -WDE -D_OCFDLL -xc # _BUILDOCFDLL in DLLs (not a dll)
! else
CFLAGS = $(CFLAGS) -WSE -D_OCFDLL # _BUILDOCFDLL in EXEs (not a dll)
! endif
LFLAGS = $(LDBG) -Twd -n -s -c -C
! if !$d(BIDSILIB)
BIDSILIB = bids$(BD)i
! endif
STDLIBS = import crtldll # Libs for linking the OC DLL
! else
! if $d(USERDLL)
CFLAGS = $(CFLAGS) -WDE -xc # Build static OCF lib for use in DLLs
! else
CFLAGS = $(CFLAGS) -WSE # Build static OCF lib for use in EXEs
! endif
! endif
! if $d(ALIGN)
CFLAGS = $(CFLAGS) -a$(ALIGN)
! endif
!endif
#--------------------------------------------------------------------
# Rules
#--------------------------------------------------------------------
.rc.res:
$(RCC) $(RCINCLUDEPATH) -fo$@ $.
.cpp.obj:
$(CC) {$& }
#--------------------------------------------------------------------
# Various file lists needed for dependency checking and LIBing.
#
# OBJS_CMN are the objs common to static libs and the dll
# OBJS_LIB are the objs that go into libs and implibs only, not the dlls
# OBJS_DLL are the objs that go into the dll only
# LIBDEPOBJS is the list of object files for lib/implib dependency checking
# LIBOBJS is the list of object files for building/addingto the libraries
# LINKOBJS is the list of object files for building the DLL
#--------------------------------------------------------------------
# Common, unsectioned objs go into static libs and DLLs
#
OBJS_CMN = \
PFXappdesc.obj\
PFXautocli.obj\
PFXautodisp.obj\
PFXautoiter.obj\
PFXautostck.obj\
PFXautosrv.obj\
PFXautosym.obj\
PFXautoval.obj\
PFXocreg.obj\
PFXocstorag.obj\
PFXoleutil.obj\
PFXtypelib.obj\
PFXversion.obj\
PFXexcept.obj
OBJS_CMN = $(OBJS_CMN)\
PFXocapp.obj\
PFXocdoc.obj\
PFXocpart.obj\
PFXocremvie.obj\
PFXocdata.obj\
PFXoclink.obj\
PFXocview.obj\
PFXocguid.obj
# Modules built only in 32-bit
#
!if $d(WIN32)
OBJS_CMN = $(OBJS_CMN) \
PFXocctrl.obj
!endif
# Put together obj groups into lists for different targets
#
!if $d(DLL)
LIBDEPOBJS= $(OBJS_CMN:PFX=) $(OBJS_LIB:PFX=) $(OBJS_DLL:PFX=)
LIBOBJS = $(OBJS_LIB:PFX=+) $(OBJS_CMN:PFX=+) $(OBJS_DLL:PFX=+)
LINKOBJS = $(OBJS_CMN:PFX=) $(OBJS_DLL:PFX=)
!else
LIBDEPOBJS= $(OBJS_CMN:PFX=) $(OBJS_LIB:PFX=)
LIBOBJS = $(OBJS_CMN:PFX=+) $(OBJS_LIB:PFX=+)
!endif
#--------------------------------------------------------------------
# targets
#--------------------------------------------------------------------
all: cfgfile $(OCFLIB)
cfgfile:
@-if not exist $(.PATH.obj)\..\NUL md $(.PATH.obj)\..
@-if not exist $(.PATH.obj)\NUL md $(.PATH.obj)
@copy &&|
-I$(INCLUDE)
-c -w $(CFLAGS) $(CDBG) $(CDIAG)
$(CPCH) -n$(.PATH.obj) $(CCFOCF)
| $(CFGFILE) > NUL
$(OCFLIB): $(LIBDEPOBJS)
@-del $(OCFLIB)
@cd $(.PATH.obj)
$(LIB) $(TLIBOPTS) $(OCFLIB) @&&|
$(LIBOBJS)
|
@cd $(.PATH.cpp)
clean:
@echo Removing .OBJs from $(.PATH.obj)
@if exist $(.PATH.obj)\*.obj del $(.PATH.obj)\*.obj
@if exist $(.PATH.obj)\*.csm del $(.PATH.obj)\*.csm
!if $d(WIN32)
ocguid.obj: ocguid.cpp
$(CC) -H- ocguid.cpp
!else
ocguid.obj: ocguid.cpp
$(CC) -H- -zE_TEXT -zFCODE ocguid.cpp
!endif